#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
XiaoZhi 客户端启动脚本（带音频诊断）
"""

import sys
import os

print("=" * 60)
print("XiaoZhi Python 客户端 - 音频诊断模式")
print("=" * 60)

# 检查 Python 版本
print(f"\n[检查] Python 版本: {sys.version}")
if sys.version_info < (3, 7):
    print("[错误] 需要 Python 3.7 或更高版本")
    sys.exit(1)

# 检查必需的库
print("\n[检查] 必需的库:")
required_libs = {
    'pyaudio': 'PyAudio',
    'websockets': 'websockets',
    'numpy': 'NumPy',
    'opuslib': 'opuslib'
}

missing_libs = []
for module, name in required_libs.items():
    try:
        __import__(module)
        print(f"  ✓ {name}")
    except ImportError:
        print(f"  ✗ {name} - 未安装")
        missing_libs.append(name)

if missing_libs:
    print(f"\n[错误] 缺少以下库: {', '.join(missing_libs)}")
    print("请运行: pip install pyaudio opuslib==3.0.1 numpy websockets")
    input("\n按 Enter 键退出...")
    sys.exit(1)

# 检查 opus.dll
print("\n[检查] Opus 音频库:")
opus_dll_path = os.path.join(
    os.path.dirname(__file__), 
    "xxx xiaozhi-web-client-main", 
    "libs", 
    "windows", 
    "opus.dll"
)
if os.path.exists(opus_dll_path):
    print(f"  ✓ opus.dll 找到")
    print(f"    路径: {opus_dll_path}")
else:
    print(f"  ✗ opus.dll 未找到")
    print(f"    预期路径: {opus_dll_path}")

# 音频配置提示
print("\n[配置] 音频参数:")
print("  - 采样率: 24000 Hz (24kHz)")
print("  - 声道: 单声道")
print("  - 帧大小: 1440 采样点 (60ms)")
print("  - 缓冲: 5 个数据包")
print("\n[提示] 如果仍有杂音，可能的原因:")
print("  1. 网络不稳定导致数据包丢失")
print("  2. CPU负载过高")
print("  3. 音频驱动问题")
print("  4. 扬声器音量过大导致削波")
print("\n建议:")
print("  - 确保网络连接稳定")
print("  - 关闭其他占用CPU的程序")
print("  - 将系统音量调至 50-70%")
print("  - 使用有线耳机可能效果更好")

print("\n" + "=" * 60)
print("开始启动程序...")
print("=" * 60 + "\n")

# 导入并运行主程序
try:
    from xiaozhi_modules.main import main
    main()
except KeyboardInterrupt:
    print("\n\n程序已被用户中断")
except Exception as e:
    print(f"\n\n[错误] 程序运行失败: {e}")
    import traceback
    traceback.print_exc()
    input("\n按 Enter 键退出...")
